home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1991 June / 64er_Magazin_91-06_1991_Markt__Technik_de.d64 / speech finde.src (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  5KB  |  126 lines

  1. 1 open4,4
  2. 10 sys36864
  3. 20 .opt p4
  4. 24 ;
  5. 25 ; ------ startadresse -----
  6. 27 ;
  7. 30 *= 2142
  8. 31 ;
  9. 32 ; **** speech-finder v1.0 ****
  10. 33 ;
  11. 34 ; von nikolaus heusler
  12. 35 ;     zwengauerweg 18
  13. 36 ;     8000 muenchen 71
  14. 37 ;
  15. 38 ; (c) 64'er, markt & technik 1991
  16. 39 ;
  17. 40 ; ------- variablen -------
  18. 42 ;
  19. 45 mem =2;zeiger in speicher
  20. 50 bts =4;anzahl der bits
  21. 55 ojoy =254;alter joystick-wert
  22. 60 ric =5;laufrichtung
  23. 70 v =1277;bildschirm-position
  24. 80 tmp =166;zwischenspeicher
  25. 90 tem =6;tempo
  26. 95 vol =54296;sid-lautstaerke
  27. 98 ;
  28. 100 ; ------- programm --------
  29. 102 ;
  30. 104 ; --- initialisieren
  31. 1000 jsr 65409;videochip initialisieren
  32. 1002 lda #<hi:ldy #>hi:jsr $ab1e;strout bildschirmtext ausgeben
  33. 1004 lda #0:sta ric;vorwaerts:sta mem:sta mem+1;speicherzeiger:ldx #24
  34. 1006 csid sta 54272,x;sid loeschen:dex:bpl csid
  35. 1007 lda #9:sta tem;starttempo = 9:lda #2:sta bts;aufloesung anfangs 2 bit
  36. 1008 jsr par;parameter am schirm ausgeben
  37. 1010 ; --- hauptschleife
  38. 1100 pump sei;interrupt aus:lda #48:sta 1;ram einblenden:lda mem+1:sta v+240
  39. 1102 ldy #0:lda (mem),y;ein byte aus speicher holen:sta tmp;und merken
  40. 1104 lda #55:sta 1:cli;und rom wiederherstellen
  41. 1106 ldx bts;anzahl der bits:bne no1;nicht ein bit
  42. 1108 ; --- 1 bit
  43. 1110 ldy #7;acht werte
  44. 1112 b1l lda tmp:asl:adc #0:sta tmp;register linksverschieben
  45. 1114 and #1;unterstes bit ist datenbit:beq n1l:lda #15;lautstaerke 15
  46. 1116 n1l jsr tb;lautstaerke an sid melden und pause
  47. 1118 dey;naechstes bit:bpl b1l:bmi rdy;fertig
  48. 1130 no1 dex;zwei bit:bne no2;nein, dann vier bit
  49. 1132 ; --- 2 bit
  50. 1134 ldy #3;vier werte
  51. 1136 b2l lda tmp:asl:adc #0:asl:adc #0:sta tmp;register zweimal linksverschieben
  52. 1138 and #3;datenbits sind bits 0 und 1:tax:lda tab2,x;wert aus tabelle lesen
  53. 1140 jsr tb;und an sid melden und warten
  54. 1142 dey;weitere bits:bpl b2l:bmi rdy;nein dann fertig
  55. 1150 no2 =*
  56. 1152 ; --- 4 bit
  57. 1154 ldy #1;zwei werte
  58. 1156 b4l lda tmp:asl:adc #0:asl:adc #0:asl:adc #0:asl
  59. 1157 adc #0;register viermal linksverschieben
  60. 1158 and #15;datenbits im unteren nibble:jsr tb;an sid melden, pause
  61. 1160 dey;noch einen wert:bpl b4l
  62. 1162 ; --- ein byte abgerabeitet
  63. 1170 rdy lda ric;laufrichtung:bne rew;nicht null, dann rueckwaerts
  64. 1171 ; --- vorwaerts
  65. 1172 inc mem;zeiger auf naechste zelle richten:bne next:inc mem+1;high:jmp next
  66. 1173 ; --- rueckwaerts
  67. 1174 rew lda mem:bne r1:dec mem+1;zeiger auf vorherige speicherzelle richten
  68. 1176 r1 dec mem;= um eins erniedrigen
  69. 1177 ; --- naechstes byte bearbeiten, joystick abfragen
  70. 1178 next lda 56320;joystick lesen:and #31:cmp ojoy:beq k5:sta ojoy;entprellen
  71. 1180 lda 56320:and #1;oben:bne k1
  72. 1181 ; --- anzahl bits veraendern
  73. 1182 ldx bts:inx:cpx #3:bcc j1:ldx #0
  74. 1184 j1 stx bts:jsr par;parameter ausgeben
  75. 1186 k1 lda 56320:and #2;unten:bne k2
  76. 1187 ; --- laufrichtung umdrehen
  77. 1188 lda ric:eor #1;invertieren:sta ric:jsr par;parameter anzeigen
  78. 1190 k2 lda 56320:and #4;links:bne k3
  79. 1191 ; --- tempo veraendern
  80. 1192 ldx tem:dex:bpl j3:ldx #9;maximalwert
  81. 1194 j3 stx tem;neues tempo:jsr par;parameter ausgeben
  82. 1200 k3 lda 56320:and #8;rechts:bne k4:lda #0:sta vol;stumm:jmp 65409;fertig
  83. 1202 k4 lda 56320:and #16;feuer:beq x5;ja, dann hexanzeige
  84. 1204 k5 jmp pump;sonst weiter in hauptschleife
  85. 1205 ; --- adresse hexadezimal einblenden
  86. 1206 x5 lda #12:sta 214;cursorzeile:lda #16:sta 211;cursorspalte
  87. 1207 jsr 58732;cursor an neue stelle:lda #"$":jsr 65490;dollarzeichen drucken
  88. 1208 lda mem+1;adresse high:jsr hex;ausgeben:lda mem;und lowbyte:jsr hex;auch
  89. 1210 ldx #0:ldy #0;verzoegerung, ca. 1 sekunde
  90. 1212 pse dex:bne pse;um stick zu entprellen:dey:bne pse
  91. 1214 f1 lda 56320:and #16;wenn feuerknopf immer noch gedrueckt:beq f1;warten
  92. 1216 f2 lda 56320:and #16;feuer:bne f1;warten, bis feuer gedrueckt
  93. 1220 lda #16:sta 211;cursor auf spalte 16:ldx #4;fuenf leerzeichen
  94. 1222 spl jsr $ab3f;space drucken:dex;und anzeige:bpl spl;loeschen:jmp pump
  95. 1690 ;
  96. 1699 ; --- zahl hexadezimal ausdrucken
  97. 1700 hex pha:lsr:lsr:lsr:lsr;erst high-nibble drucken:jsr hex1:pla;low-nibble
  98. 1702 hex1 and #15;signifikante bits isolieren:tax;als tabellen-index
  99. 1704 lda hext,x;hexwert aus tabelle:jmp 65490;ausdrucken
  100. 1790 ;
  101. 1792 ; --- sid-lautstaerke setzen und pause
  102. 1800 tb sta vol;wert an sid melden
  103. 1802 ldx tem;tempo:beq fert;null, dann keine pause
  104. 1804 wait nop:nop;verzoegerung:nop:nop:nop:nop:dex:bpl wait
  105. 1806 fert rts
  106. 1890 ;
  107. 1892 ; --- parameter am bildschirm ausgeben
  108. 1900 par ldx bts;anzahl bits:lda bitt,x:sta v;in video-ram
  109. 1902 ldx ric:lda rict,x:sta v+80;richtung
  110. 1904 lda #"9":sec:sbc tem:sta v+160;neun minus tempo:rts
  111. 1997 ;
  112. 1998 ; ------ diverse texte ----
  113. 1999 ;
  114. 2000 hi .asc "speech-finder v1":.byt 13
  115. 2001 .asc "[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]
  116. 2002 .byt 13,13:.[198] "von nikolaus heusler, 01.91
  117. 2004 .byt 13:.asc "  anz. bits: [160]
  118. 2006 .byt 13:.[198] "   richtung: close
  119. 2008 .byt 13:.asc "      tempo: [160]
  120. 2010 .byt 13:.[198] "   speicher: close
  121. 2020 .byt 13:.asc "bedienung: joystick port 2":brk
  122. 2100 hext .asc "0123456789abcdef
  123. 2102 bitt .[198] "124
  124. 2104 rict .asc "
  125. 2200 tab2 .byt 15,10,5,0
  126.